import pymysql
import json

# 数据库连接配置
db_config = {
    'host': '172.18.214.116',
    'port': 3305,  # 👈 正确指定了端口
    'user': 'xyz_dev',
    'password': 'jnBepWNK2mS4ceKf',
    'database': 'cloud_resource',
    'charset': 'utf8mb4'
}

# 连接数据库
conn = pymysql.connect(**db_config)
cursor = conn.cursor()

# 1. 查询所有记录的 id 和 remark 字段
sql_select = "SELECT id, remark FROM resource where channel=101"
cursor.execute(sql_select)
results = cursor.fetchall()  # 👈 获取所有记录

if results:
    countNum = 0
    for record in results:
        record_id, remark_str = record
        print(f"原始 remark 字符串 (记录 ID: {record_id}): {remark_str}")  # 👈 打印原始值用于调试

        try:
            # 2. 解析 JSON 字符串
            remark_dict = json.loads(remark_str)

            # 3. 提取 prompt 值
            prompt_value = remark_dict.get('prompt', '')
            print(f"记录 ID: {record_id}, 提取到的 prompt 值: {prompt_value}")

            # 4. （可选）修改 prompt 的值（如果需要）
            # remark_dict['prompt'] = "新的 prompt 值"

            # 5. 将修改后的字典重新序列化为 JSON 字符串（如果需要更新 remark，可以取消注释下面的代码）
            # updated_remark_str = json.dumps(remark_dict, ensure_ascii=False)
            # sql_update_remark = "UPDATE resource_sync_middle SET remark = %s WHERE id = %s"
            # cursor.execute(sql_update_remark, (updated_remark_str, record_id))

            # 6. 构造新的 remark 内容（基于 prompt）
            new_remark_value = f"{prompt_value}"  # 可以自定义格式

            # 7. 更新 remark 字段
            sql_update_remark = "UPDATE resource SET remark = %s WHERE id = %s"
            cursor.execute(sql_update_remark, (new_remark_value, record_id))
            countNum+=1
            print(f"已更新记录 ID: {record_id}")
        except json.JSONDecodeError as e:
            print(f"记录 ID: {record_id}, JSON 解析失败: {e}")
            print(f"原始 remark 字符串 (可能非法): {remark_str}")  # 👈 打印可能非法的 JSON 字符串
        except Exception as e:
            print(f"记录 ID: {record_id}, 发生错误: {e}")
            conn.rollback()  # 回滚当前事务（仅当前记录失败不影响其他记录）
    conn.commit()  # 所有记录处理完成后统一提交
    print(f"所有记录已更新完成, 共计 {countNum} 条")
else:
    print("未找到任何记录")

cursor.close()
conn.close()